#include "consulta_seguro.h"
#include <QDjangoQuerySet.h>
#include <Utils/Utils.h>

Consulta_seguro::Consulta_seguro(QWidget *parent) :
    VentanaConsulta(parent)
{
    this->setWindowTitle("Consulta Seguros");
    indiceBusqueda = 0;
    modeloConsulta->setTable("seguro");
    modeloConsulta->select();
    filtro->setSourceModel(modeloConsulta);
    ui->tableView->setModel(filtro);
    ui->comboBuscarPor->addItem("Nombre");
    ui->comboBuscarPor->addItem("RUC");
    ui->comboBuscarPor->addItem("Contacto");
    ui->textoBusqueda->setPlaceholderText("Nombre");
    ui->tableView->hideColumn(0);
    ui->tableView->hideColumn(7);

    filtro->beginDeclareFilter();
    filtro->setFilter(7, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
    filtro->endDeclareFilter();
}

Consulta_seguro::~Consulta_seguro()
{
}


void Consulta_seguro::on_registrar_clicked(){

    reg_seguro = new RegMod_seguro();
    reg_seguro->exec();
    delete reg_seguro;
    modeloConsulta->select();
}

void Consulta_seguro::on_eliminar_clicked()
{
    QDjango::setDebugEnabled(true);

    //Se obtienen los indices seleccionados (fila seleccionada, columna_id)

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count()>0)
    {
        int respuesta = cuadroMensaje("Advertencia", "Esta seguro que desea eliminar el/los seguros seleccionados?", "advertencia");
        if(respuesta == QMessageBox::Ok)
        {
            foreach(QModelIndex index, indexes){
                int id = ui->tableView->model()->data(index).toInt();
                QDjangoQuerySet<Seguro> seguros;
                Seguro *seguro = seguros.filter(QDjangoWhere("id_seguro", QDjangoWhere::Equals, id)).at(0);
                seguro->setEstado("inactivo");
                seguro->save();
                delete seguro;
            }
        }
    }
    else cuadroMensaje("Debe seleccionar un seguro para eliminar", "");
    modeloConsulta->select();

}

void Consulta_seguro::on_modificar_clicked()
{
    int seleccion = obtenerIndicesSeleccionados(0).count();
    {
        if(seleccion == 1){
            int id = ui->tableView->model()->data(obtenerIndicesSeleccionados(0).at(0)).toInt();
            QDjangoQuerySet<Seguro> seguros;
            Seguro *seguro = seguros.filter(QDjangoWhere("id_seguro", QDjangoWhere::Equals, id)).at(0);
            reg_seguro = new RegMod_seguro(this, seguro);
            reg_seguro->exec();
            delete reg_seguro;
            delete seguro;
            modeloConsulta->select();
        }
        else cuadroMensaje("Debe seleccionar un seguro para modificar", "", "Error");
    }
}

void Consulta_seguro::on_textoBusqueda_textChanged(const QString &arg1)
{
    filtro->beginDeclareFilter();
    filtro->setFilter(indiceBusqueda, QVariant(arg1), Qt::DisplayRole, Qt::MatchContains);
    filtro->endDeclareFilter();
}

void Consulta_seguro::on_refrescarTabla_clicked()
{
    for(int cols = 0; cols < ui->tableView->model()->columnCount()-1; cols++){
        filtro->removeFilter(cols);
    }
    ui->comboBuscarPor->setCurrentIndex(0);
    ui->textoBusqueda->clear();
}

void Consulta_seguro::on_comboBuscarPor_currentTextChanged(const QString &arg1)
{
    if(arg1 == "Nombre") indiceBusqueda = 1;
    else if(arg1 == "RUC") indiceBusqueda = 3;
    else if(arg1 == "Contacto") indiceBusqueda = 2;
    ui->textoBusqueda->setPlaceholderText(arg1);
}

void Consulta_seguro::on_checkActivos_toggled(bool checked)
{
    if(checked){
        filtro->beginDeclareFilter();
        filtro->setFilter(7, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();
    }
    else filtro->removeFilter(7);
}

void Consulta_seguro::on_tableView_doubleClicked()
{
    Consulta_seguro::on_modificar_clicked();
}

